import re
import time
from wxauto import *
import openpyxl
from RWdata import send_msg

# 读到的是命令的微信，主的的命令有：上分、下分、


DEBUG=True
def debug_print(*p):
    if DEBUG:
        print(*p)
#当是cmd微信发信息来的时候，进行操作
def cmd_caoZuo(wx_name,wx_info):
    debug_print("这是命令微信读出的信息", wx_name, wx_info)
    if '上分' in wx_info:  # 这是上分的命令
        shengFenName = re.sub('上分', '', wx_info)
        shengFenName = re.sub("\d+", '', shengFenName)
        fenShu = re.findall('\d+', wx_info)
        fenShu = ''.join(fenShu)
        fenShu = int(fenShu)
        debug_print("上分命令操作的名字和分数", shengFenName, fenShu)
        losePow = allFen_file_writ(shengFenName, fenShu)
        if losePow ==-1:#当是-1的时候，说明是分数有问题
            pass
        else:
            writ_data_to_recod(shengFenName, '上分', fenShu)
            debug_print("剩下的能量是",losePow)

    if '下分' in wx_info:  # 这是上分的命令
        shengFenName = re.sub('下分', '', wx_info)
        shengFenName = re.sub('\d+', '', shengFenName)

        fenShu = re.findall('\d+', wx_info)
        fenShu = ''.join(fenShu)
        fenShu = int(fenShu)
        debug_print("下分命令操作的名字和分数", shengFenName, fenShu)
        losePow = allFen_file_writ(shengFenName, -fenShu)
        if losePow == -1:  # 当是-1的时候，说明是分数有问题
            pass
        else:
            writ_data_to_recod(shengFenName, '下分', fenShu)
            debug_print("剩下的能量是", losePow)
    #对加能量的的Wx发送
    wx = WeChat()
    wx.Search(shengFenName)
    send_msg("您的剩余能量是："+str(losePow))






#将上分或下分写入allFeng.xlsx的文件里
def allFen_file_writ(name,data):
    '''
    :param name: 写入的微信名
    :param data: 写入的数据，当写入的数据是负的时候，说明的下分
    :return: -1,表示是下分出错，
    '''
    file="./img/allFeng.xlsx"
    wb1 = openpyxl.load_workbook(file)
    sheet1 = wb1.active
    returnDate =0

    for i in range(2,1000):
        readName =sheet1['A'+str(i)].value
        if readName ==None:#说明是读到了最后的一行，没有找到名称，所以要增加一行来记录
            sheet1['A'+str(i)].value =name
            sheet1['B'+str(i)].value =data
            returnDate =sheet1['B' + str(i)].value
            debug_print("这里说明在allFeng.xlsx里原来的没有当前的名字")
            if  returnDate< 0:
                return -1
            break
        else:
            if readName ==name:#在原来的文件里找到了名字
                sheet1['B' + str(i)].value =sheet1['B'+str(i)].value+data
                returnDate = sheet1['B' + str(i)].value
                debug_print("这里说明在allFeng.xlsx里找到了名字")
                if returnDate<0:
                    return -1
                break
            else:
                continue


    wb1.save("./img/allFeng.xlsx")
    debug_print("allFeng.xlsx文件操作完成，准备跳出，返回的能量值是",returnDate)
    return returnDate

#命令微信对命令的记录
def writ_data_to_recod(name,cmd,data):

    debug_print('进入writ_data_to_recod函数')
    fileName = './img/能量操作.xlsx'
    wb = openpyxl.load_workbook(fileName)
    sheet = wb.active

    curTime = time.localtime()

    for i in range(2,1000):
        readName=sheet['A'+str(i)].value
        if readName==None:
            sheet['A'+str(i)].value =name
            debug_print('能量操作的名字已写入')
            match cmd:
                case '上分':
                    debug_print('能量操作上分')
                    sheet['B'+str(i)].value =data
                    #allFen_file_writ(name,data)
                case  '下分':
                    debug_print('能量操作下分')
                    sheet['C'+str(i)].value =data
                    #allFen_file_writ(name, -data)
            sheet['D'+str(i)].value =str(curTime.tm_mon)+'/'+str(curTime.tm_mday)+' '+ str(curTime.tm_hour)+':'+str(curTime.tm_min)
            break
    debug_print('能量文件准备保存')
    wb.save(fileName)

